/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pio.action.administrador.coordinadores;

import DBMS.DataBaseManager;
import clases.Configuracion;
import clases.Coordinador;
import clases.Institucion;
import clases.ReporteCoordinadores;
import clases.ReportePreseleccion;
import clases.TipoReporte;
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author tamerdark
 */
public class GenerarReporte extends DispatchAction {

    public ActionForward page(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        return mapping.findForward("page");
    }

    public ActionForward cvs(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        DataBaseManager dbms = DataBaseManager.getInstance();
        String path = Configuracion.getReportesPath() + "Coordinadores.cvs";
        List<Coordinador> coordinadores = dbms.consultarCoordinador(new Coordinador());
        List instituciones = dbms.consultarInstitucion(new Institucion());
        try {
            File file = new File(path);
            file.createNewFile();
            FileWriter fr = new FileWriter(file);
            fr.write("Cedula,Apellidos,Nombres,Institucion,Correo,"
                    + " Direccion , Fecha Nacimiento, Telefono Casa, Telefono Celular\n");
            for (Coordinador a : coordinadores) {
                String correo = (a.getCorreo() == null || a.getCorreo().equals("")) ? "no tiene" : a.getCorreo();
                System.out.println("Correo " + correo);
                fr.write(a.getCedula() + "," + a.getApellidos() + "," + a.getNombres()
                        + "," + getInstituciones(a) + "," + correo + ", "
                        + a.getDireccion() + "," + a.getFechaNacimiento() + ","
                        + a.getTelefonoCasa() + "," + a.getTelefonoCelular() + "," + "\n");
            }
            fr.close();
            request.getSession().setAttribute("reporte", path);
            request.setAttribute("reporte", path);
            return mapping.findForward("cvs");
        } catch (Exception e) {
            return mapping.findForward("failure");
        }
    }

    public ActionForward make(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        DataBaseManager d = DataBaseManager.getInstance();
        ReporteCoordinadores reporte = (ReporteCoordinadores) new ReporteCoordinadores();
        reporte.setTipo(TipoReporte.COORDINADOR);
        reporte.setNumAutenticacion();
        while (d.existeNumAutenticacion(reporte.getNumAutenticacion())) {
            reporte.setNumAutenticacion();
        }
        d.agregarReporte(reporte);
        Coordinador c = new Coordinador();
        reporte.setId(d.buscarID(reporte.getNumAutenticacion()));
        reporte.setCoordinadores(d.consultarCoordinador(c));
        reporte.setInstituciones(d.consultarInstituciones());
        String path = Configuracion.getReportesPath() + reporte.getTipo() + reporte.getId() + ".pdf";
        try {
            reporte.generar(path);
            //path = "/home/charles/Escritorio/servicio comunitario/proy/web/administrador/preseleccion/reportes/aspirante.pdf";
            //f = new File(path);
            //file = new FileOutputStream(f);
            //reporte.generar(file);
            request.getSession().setAttribute("reporte", path);
            request.setAttribute("reporte", path);
            return mapping.findForward("success");
        } catch (Exception e) {
            reporte.setMensaje("Problemas con el servidor.");
            return mapping.findForward("failure");
        }
    }

    private String getInstituciones(Coordinador a) {
        String aa = "";
        for (Institucion i : a.getInstituciones()) {
            aa += i.getNombre() + " ";
        }
        return aa;
    }
}
